package v1

import "context"

type NewPluginCollector func() PluginCollector

type PluginCollector interface {
	BeatPlugin
	//config是插件的配置，配置格式需自定义，一般使用json格式。
	NewCollector(config []byte) (Collector, error)
}

type Collector interface {
	Key() string
	Connect() error                                      //连接数据源
	Close() error                                        //关闭数据源
	SetClosedCallback(callback chan map[Collector]error) //连接被主动断开时回调
	GoCollect(Recorder, context.Context) chan DataA      //采集日志
	Url() string
}

// Collector 接口定义了采集器的基本功能，包括连接数据源、关闭数据源、设置关闭回调函数和采集数据等方法。
// GetID返回数据源ID，如果是单数据源，ID是1。多数据源各数据源由1、2...等组成。
// payload一般存储为[]byte
type DataA interface {
	GetID() int
	SetMeta(key string, value any)
	GetMetaByKey(key string) (any, bool)
	//将元数据复制到目标map中
	Copy(target map[string]any)
	// GetPayload 返回数据
	GetPayload() any
}
